package ipdesk.model.notice.action;



import java.util.List;
import java.util.Map;

import ipdesk.model.notice.bean.NoticeBean;
import ipdesk.model.notice.dao.NoticeDao;
import ipdesk.model.report.promote.dao.PromoteInfoDao;


import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;

import ecg.util.PageUtil;

public class NoticeSelectAction extends ActionSupport implements Preparable, ModelDriven<NoticeBean>
{
	// 모델 드리븐에 사용되는 도메인 객체.
	private NoticeBean noticeBean;
	
	// 상세보기 뷰페이지에서 사용되는 도메인 객체
	private NoticeBean noticeDetail;
	
	// 페이지 정보를 저장하는 맵 객체
	private Map pageInfoDataMap;
	
	// 목록페이지에서 사용되는 도메인 객체
	private List<NoticeBean> noticeList;
	
	/**
	 * 목록 정보 조회.
	 */
	@Override
	public String execute() throws Exception
	{
		// 전체 데이터 갯수를 가져온다.
		int totalCount = NoticeDao.getInstance().getDataTotalCount(noticeBean);
		
		// 페이지 정보 저장.
		pageInfoDataMap = PageUtil.getInstance().getPageInfoData(totalCount, noticeBean.getPageNumber());
		
		pageInfoDataMap.put("totalCount", totalCount);
		
		// 공지사항 정보를 가지고 온다.
		noticeList = NoticeDao.getInstance().getPagingDataList(pageInfoDataMap);
		
		System.out.println("페이징된 건수: " + noticeList.size());
		return SUCCESS;
	}
	
	/**
	 * 상세보기 데이터 가져오기
	 * @return
	 * @throws Exception
	 */
	public String executeDetail() throws Exception
	{
		/**
		 * 1. 목록에서 넘어온 promoteSeq를 조건으로 해당 데이터를 DB에서 가지고 온다.
		 * 2. 해당 사용자, 해당 지역코드는 Dao쪽에서 세션에 담긴 데이터를 가지고 온다.
		 */
		
		int noticeSeq = noticeBean.getNoticeSeq();
		
		// 조회수 업데이트.
		NoticeDao.getInstance().updateReadCount(noticeSeq);
		
		// 상세보기 데이터 가져오기.
		noticeDetail = NoticeDao.getInstance().getDetailData(noticeSeq);
		
		return SUCCESS;
	}
	
	public Map getPageInfoDataMap()
	{
		return pageInfoDataMap;
	}

	public void setPageInfoDataMap(Map pageInfoDataMap)
	{
		this.pageInfoDataMap = pageInfoDataMap;
	}
	
	public void prepare() throws Exception
	{
		noticeBean = new NoticeBean();
	}
	
	public NoticeBean getNoticeDetail()
	{
		return noticeDetail;
	}


	public void setNoticeDetail(NoticeBean noticeDetail)
	{
		this.noticeDetail = noticeDetail;
	}


	public List<NoticeBean> getNoticeList()
	{
		return noticeList;
	}


	public void setNoticeList(List<NoticeBean> noticeList)
	{
		this.noticeList = noticeList;
	}


	public NoticeBean getModel()
	{
		return noticeBean;
	}
}
